package com.skyyan.netty.jjf.util;

/**
 * 汉字处理
 * byte[] 数组 转换成汉字(注意去除前后端补0空位)
 * 汉字转换成byte数组 占用12个字节,位数不足 末尾补0
 *
 * @author skyyan
 */
public class ChineseUtils {

    /**
     *  把数组转换成汉字 ,注意去除 首尾的 补0 占位
     * @param chineseBytes
     * @return
     * @throws Exception
     */
    public static String byteToChinese(byte[] chineseBytes){
        if(chineseBytes==null){
            return "";
        }
        // 去除 补0的空站位 ,然后转换成汉字 utf-8编码
        return  JJFByteUtil.safeDecodeUsername(chineseBytes);
    }


    /**
     *  汉字转换成byte 数组,且位数是12;长度不足 则进行末尾补0
     * @param chineses
     * @return
     * @throws Exception
     */
    public static  byte[] chineseToBytes(String chineses)throws Exception{
        if(chineses==null){
            return new byte[12];
        }
        byte[] encoded = FixedLengthUtf8Encoder.encodeTo12Bytes(chineses);
        return encoded;
    }


    public static String bytesToHex(byte[] bytes) {
        if (bytes == null || bytes.length == 0) {
            return "";
        }
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02X", b & 0xFF));
        }
        return sb.toString();
    }
    public static void main(String [] args)throws Exception{
        String username="张三";
        username="skyyan";
        username=null;
        byte[] encoded=chineseToBytes(username);
        System.out.println("输入: \"" + username + "\" → Hex: " + JJFByteUtil.bytesToHex(encoded));

        System.out.println("===数组转换成 汉字==========");
        username=ChineseUtils.byteToChinese(encoded);
        System.out.println("数组Hex:"+JJFByteUtil.bytesToHex(encoded)+"||========>转换成汉字:"+username);
    }
}
